/**
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 项目名：	rumba
 * 文件名：	IMscbOrder.java
 * 模块说明：	
 * 修改历史：
 * Oct 30, 2007 - lxm - 创建。
 */
package com.hd123.rumba.mscb.order;

import java.util.Date;
import java.util.List;

import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.mscb.subscriber.Subscriber;
import com.hd123.rumba.runtime.IBaseEntity;

/**
 * 消息订阅单 | 实体 | 接口类
 * 
 * @author lxm
 * 
 */
public interface IMscbOrder extends IBaseEntity {

  /**
   * 订阅主题类型
   * <p>
   * 
   * 当前订阅所针对的主题类型，即标志消息源的订阅主题的类名。
   */
  public String getSubjectClass() throws BusinessException;

  public void setSubjectClass(String subjectClass) throws BusinessException;

  /** 事件 */
  public String getEvent() throws BusinessException;

  public void setEvent(String event) throws BusinessException;

  /** 约束条件上下文 */
  public String getConstraintContext() throws BusinessException;

  public void setConstraintContext(String constraintContext) throws BusinessException;

  /** 约束条件描述 */
  public String getConstraintDesc() throws BusinessException;

  public void setConstraintDesc(String constraintDesc) throws BusinessException;

  /** 约束条件解释器类名 */
  public String getConstraintClassName() throws BusinessException;

  public void setConstraintClassName(String constraintClassName) throws BusinessException;

  /** 订阅者。存在用户与角色两种可能性。 */
  public Subscriber getSubscriber() throws BusinessException;

  public void setSubscriber(Subscriber subscriber) throws BusinessException;

  /** 附言 */
  public String getNote() throws BusinessException;

  public void setNote(String note) throws BusinessException;

  /** 标记。 */
  public String getFlag() throws BusinessException;

  public void setFlag(String flag) throws BusinessException;
  
  /** 订阅时间。 */
  public Date getSubscribeTime() throws BusinessException;
  
  public void setSubscribeTime(Date subscriberTime) throws BusinessException;

  /** 提醒明细列表 */
  public List<IMscbOrderPrompt> getPrompts() throws BusinessException;

  public void setPrompts(List<IMscbOrderPrompt> prompts) throws BusinessException;

  /**
   * 根据提醒提供者查找提醒明细。
   * 
   * @param providerClassName
   *          指定提醒提供者类名。
   * @return 返回找到的提醒明细，若找不到则返回null。
   * @throws BusinessException
   */
  public IMscbOrderPrompt getPromptByProvider(String providerClassName) throws BusinessException;
}
